package unrn.isiii.model;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;

@Entity
public class Task {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;

	@NotNull(message = "Direccion obligatorio")
	@Size(max = 48, min = 2, message = "Direccion obligatorio")
	private String direccion;

	@NotNull(message = "Nombre obligatorio")
	@Size(max = 48, min = 2, message = "Nombre obligatorio")
	private String nombre;

	@NotNull(message = "Telefono obligatorio")
	@Size(max = 48, min = 2, message = "Telefono obligatorio")
	private String telefono;

	@NotNull(message = "Cuit obligatorio")
	@Size(max = 48, min = 2, message = "Cuit obligatorio")
	private String cuit;

	@NotNull(message = "Email obligatorio")
	@Size(max = 48, min = 2, message = "Email obligatorio")
	@Email(message = "Ingrese un Email valido")
	private String email;

	@NotNull(message = "Ciudad obligatorio")
	@Size(max = 48, min = 2, message = "Ciudad obligatorio")
	private String ciudad;

	@OneToMany(mappedBy = "proveedor", fetch = FetchType.LAZY)
	private List<Producto> productos;

	@NotNull(message = "Provincia obligatorio")
	@Size(max = 48, min = 2, message = "Provincia obligatorio")
	private String provincia;

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getCuit() {
		return cuit;
	}

	public void setCuit(String cuit) {
		this.cuit = cuit;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getCiudad() {
		return ciudad;
	}

	public void setCiudad(String ciudad) {
		this.ciudad = ciudad;
	}

	public String getProvincia() {
		return provincia;
	}

	public void setProvincia(String provincia) {
		this.provincia = provincia;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Task other = (Task) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

}
